package com.xiao.xiaorpc.registry;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 本地注册中心
 * 使用线程安全的 ConcurrentHashMap 存储服务注册信息，
 * key 为服务名称、value 为服务的实现类
 *
 * 本地服务注册器和注册中心的作用是有区别的。
 * 注册中心的作用侧重于管理注册的服务、提供服务信息给消费者；
 * 而本地服务注册器的作用是根据服务名获取到对应的实现类，
 * 是完成调用必不可少的模块。
 */
public class LocalRegistry {
    /**
     * 注册信息存储
     */
    private static final Map<String, Class<?>> map = new ConcurrentHashMap<>();

    /**
     * 注册服务
     * @param serviceName
     * @param implClass
     */
    public static void register(String serviceName, Class<?> implClass) {
        map.put(serviceName, implClass);
    }

    /**
     * 获取 服务 实现类
     * @param serviceName
     * @return
     */
    public static Class<?> get(String serviceName) {
        return map.get(serviceName);
    }

    /**
     * 删除 服务
     * @param serviceName
     */
    public static void remove(String serviceName) {
        map.remove(serviceName);
    }

}
